package com.example.webflux_module.service;

import reactor.core.publisher.Mono;

import java.util.Optional;

/**
 * Mono 是一个发出（emit）0-1个元素的Publisher,
 * 可被 onComplete 信号或者 onError 信号所终止，
 * Mono 整体和 Flux 差不多，只不过这里只会发出 0-1 个元素。也就是说不是有就是没有。
 */
public class MonoService {

    /**
     * 传统数据处理
     */
    public UserInfo currentUser() {
        return 1 == 1 ? UserInfo.builder().build() : null;
    }

    /**
     * Optional处理方式
     */
    public Optional<UserInfo> echo() {

        return 1 == 1 ? Optional.of(UserInfo.builder().build()) : Optional.empty();
    }

    /**
     * 反应式数据处理
     */
    public Mono<UserInfo> gett() {
        return 1 == 1 ? Mono.just(UserInfo.builder().build()) : Mono.empty();
    }
}
